/*
处理用户发送的消息类型 和内容
决定返回不同的内容给用户
 */
// 1、将热门消息查询出来，所以要引入 模型对象
const Theaters=require('../model/Theaters') //有了他 我们就能得到我们想查询的内容
// 引入url
const {url,qiniuurl}=require('../config')

module.exports= async message =>{
    let options={
        toUserName:message.FromUserName,
        fromUserName:message.ToUserName,
        createTime:Date.now(),
        msgType:'text'  //设置一个默认的 text
    }

    //判断用户发送的消息 是否是文本消息
    let content="i nonw know"
    if(message.MsgType === 'text'){  //文本消息
        options.msgType='text';
        //判断用户发送的消息内容具体是什么
        if (message.Content==='热门'){
            // 这里用到了 数据库 所以在app里面 必须引入db 先链接数据库  再启动app
            // 回复用户热门消息，以图文列表的形式
            const data = await Theaters.find({},{title:1,summary:1,image:1,doubanID:1,posterKey:1,_id:0})

            // console.log(data)
            //将content 初始化为空数组，方便以后一个个push
            content=[];
            // 不设置news类型，他会以为回复数组。设置为news才能回复
            options.msgType='news';
            //通过遍历 将数据添加进去
            for (let i=0;i<data.length;i++){
                let item=data[i];

                content.push({
                    title:item.title,
                    description:item.summary,
                    picUrl:`${qiniuurl}${item.posterKey}-qiniuchuli`,
                    url:`${url}/detail/${item.doubanID}`
                })
            }
            // console.log(content[0])
        } else if(message.Content === '首页'){
             options.msgType='news';

            content=[{
                title:'硅谷电影首页',
                description:'guigu dianying shouye',
                picUrl:'http://py4fl8ys7.bkt.clouddn.com/J8Md1Z3KpK.jpg',
                url:`${url}/movie`
            }]
            console.log(content)
        } else if(message.Content.match('hi')){
            content =" hello"
        }else{
            let userInputText=message.Content;
            // 搜索用户的指定信息   我们从数据库查找
            // 这里用到了 数据库 所以在app里面 必须引入db 先链接数据库  再启动app
            const data = await Theaters.findOne({title:userInputText},{title:1,summary:1,image:1,posterKey:1,doubanID:1,_id:0})
            // console.log(data)
            // 判断data是否有值
            if(data){
                options.msgType='news';
                content=[]
                content.push({
                    title:data.title,
                    description:data.summary,
                    picUrl:`${qiniuurl}${data.posterKey}`,
                    url:`${url}/detail/${data.doubanID}`
                })
            }else{
                content='您输入的没查找到。'
            }
        }
    }else if(message.MsgType === 'image'){//图片
        options.msgType='image';
        options.mediaId=message.MediaId;
        console.log(message.PicUrl);
    }else if(message.MsgType === 'vioce'){ //语音
        options.msgType='voice';
        options.mediaId=message.MediaId;
        console.log(message.Recognition);
        // message.Recognition 微信会进行 一大串  unicode编码  <%这种
        // 如果要发送ajax 不能直接拼在地址 后面了
        // const url=`https://XXXXX?q=${message.Content}&count=8`
        // 要通过另一种写法
        // 例如
        /*const {result}=rp({
            method:'GET',
            url,
            json:true,
            qs:{
                q:message.Content,
                count:8
            }
        })*/

        let userInputText=message.Recognition;
        // 搜索用户的指定信息   我们从数据库查找
        // 这里用到了 数据库 所以在app里面 必须引入db 先链接数据库  再启动app
        const data = await Theaters.findOne({title:userInputText},{title:1,summary:1,image:1,doubanID:1,posterKey:1,_id:0})
        // console.log(data)
        // 判断data是否有值
        if(data){
            options.msgType='news';
            content=[]
            content.push({
                title:data.title,
                description:data.summary,
                picUrl:`${qiniuurl}${data.posterKey}`,
                url:`${url}/detail/${data.doubanID}`
            })
        }else{
            content=message.Recognition;
        }

    }else if(message.MsgType === 'location'){ //地理信息
        content =`纬度：${message.Location_X};
                经度：${message.Location_Y};
                地图缩放大小：${message.Scale};
                位置信息：${message.Lable};
                `
    }
    else if(message.MsgType === 'event'){ //事件推送
        if(message.Event==='subscribe'){  // 订阅事件
            content="欢迎您的关注 \n " +
                "回复：首页 能看到电影预告片页面 \n" +
                "回复：热门 能看到最新最热门的电影\n" +
                "回复：文本 能看到指定的电影信息\n" +
                "回复：语音 能查看指定的电影信息\n" +
                "也可以点击下面的菜单，了解硅谷电影公众号"
            if(message.EventKey==='xxxxxx'){ //扫描带参数的二维码关注事件
                // 给xxxxxx加1
                content="huanying您的关注 xxxxx"
            }else if(message.EventKey==='xxxxxx2'){
                // 给xxxxxx2加1
                content="huanying您的关注 xxxx2"
            }
        }else if(message.Event==='unsubscribe'){ //取消关注
            console.log('取消关注')
        }else if (message.Event ==='SCAN'){
            console.log('用户已关注过，再扫描带参数的二维码关注事件')
        }else if(message.Event==='LOCATION'){ //这个 公众平台的api控制里面 开启
            options.msgType='text'
            content =`纬度：${message.Latitude};
                经度：${message.Longitude};
                精度：${message.Precision};
                `
        }else if(message.Event==='CLICK'){ //  自定义菜单的点击事件
            options.msgType='text'
            console.log('推送了click事件')
            if(message.EventKey==='help'){
            content = content="欢迎您的关注 \n " +
                "回复：首页 能看到电影预告片页面 \n" +
                "回复：热门 能看到最新最热门的电影\n" +
                "回复：文本 能看到指定的电影信息\n" +
                "回复：语音 能查看指定的电影信息\n" +
                "也可以点击下面的菜单，了解硅谷电影公众号";
            }
        }
    }
    options.content=content;

    return  options
}